package com.课上案例练习.网络编程.Tcp编程聊天版本3;


/**
 * 上述可以达到接受用户输入数据，但是必须是一问一答，就是客户端输入了，必
 * 须等服务器回复了才能继续发送消息
 * 解决方案： 使用多线程，重新开启一个新的线程来接受数据，这样接受和发送
 * 在不同的线程中，就会相互不影响
 */

import com.课上案例练习.网络编程.Tcp编程聊天版本3.接收的线程.CilentThreadinput;
import com.课上案例练习.网络编程.Tcp编程聊天版本3.接收的线程.ServerThreadinput;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

import static com.课上案例练习.网络编程.Tcp编程聊天版本3.Client.input;

/**
 * 客户端
 */
public class Client {
    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 9999);
        //该线程用来接收信息
        new CilentThreadinput(socket).start();
        while (true) {
            //传输信息
            DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
            dataOutputStream.writeUTF(input.next());
        }
    }
}

/**
 * 服务端
 */
class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(9999);
        Socket accept = serverSocket.accept();
        new ServerThreadinput(accept).start();
        while (true) {
            //传输信息
            DataOutputStream dataOutputStream = new DataOutputStream(accept.getOutputStream());
            dataOutputStream.writeUTF(input.next());
        }
    }
}